جزوه جامع فصل چهارم · مدیریت فایل‌ها، آرشیو، مجوزها و جستجو ← بازگشت به فهرست
📘 فصل چهارم · مدیریت فایل‌ها، آرشیو، مجوزها و جستجو مرور جامع نکات امتحانی
📅 تاریخ: ۲۷ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian/Red Hat

▍ ۱. مدیریت فایل‌ها و دایرکتوری‌ها

• نمایش مسیر جاری و لیست فایل‌ها

┌──(ya3in㉿kali)-[~] └─$ pwd /home/ya3in

توضیح: pwd مسیر کامل دایرکتوری فعلی را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ ls -la total 120 drwxr-xr-x 5 ya3in ya3in 4096 Aug 17 10:00 . drwxr-xr-x 3 root root 4096 Aug 17 09:00 .. -rw-r--r-- 1 ya3in ya3in 1024 Aug 17 10:00 file.txt drwxr-xr-x 2 ya3in ya3in 4096 Aug 17 10:00 dir/

توضیح: ls -la همه فایل‌ها (شامل مخفی‌ها) را با جزئیات کامل نمایش می‌دهد. -l برای جزئیات و -a برای نمایش فایل‌های مخفی (شروع با .) استفاده می‌شود.

• ایجاد فایل و دایرکتوری

┌──(ya3in㉿kali)-[~] └─$ touch newfile.txt └─$ mkdir newdir └─$ mkdir -p parent/child/grandchild

توضیح: touch یک فایل خالی می‌سازد. mkdir دایرکتوری ایجاد می‌کند و -p امکان ایجاد چند سطح تو در تو را فراهم می‌کند.

• کپی، جابجایی و حذف

┌──(ya3in㉿kali)-[~] └─$ cp file.txt file_copy.txt └─$ mv file.txt renamed.txt └─$ rm renamed.txt └─$ rm -r newdir

توضیح: cp برای کپی، mv برای جابجایی یا تغییر نام، rm برای حذف فایل و rm -r برای حذف دایرکتوری (بازگشتی) استفاده می‌شود. rm -rf حذف اجباری و خطرناک است.

• کاراکترهای ویژه (Wildcards)

┌──(ya3in㉿kali)-[~] └─$ ls *.txt file.txt notes.txt project.txt └─$ ls file?.txt file1.txt file2.txt

توضیح: * معادل هر تعداد کاراکتر و ? معادل دقیقاً یک کاراکتر است.

▍ ۲. فشرده‌سازی فایل‌ها

📦 gzip

└─$ gzip file.txt file.txt.gz

gunzip file.txt.gz برای باز کردن.

پسوند: .gz · سرعت بالا

📦 bzip2

└─$ bzip2 file.txt file.txt.bz2

bunzip2 file.txt.bz2 برای باز کردن.

پسوند: .bz2 · نسبت فشرده‌سازی بهتر

📦 xz

└─$ xz file.txt file.txt.xz

unxz file.txt.xz برای باز کردن.

پسوند: .xz · بهترین نسبت فشرده‌سازی

📦 zip

└─$ zip archive.zip file.txt archive.zip

unzip archive.zip برای باز کردن.

پسوند: .zip · سازگار با ویندوز

💡 نمایش محتوای فشرده بدون باز کردن:
  • zcat file.gz → نمایش محتوای gzip
  • bzcat file.bz2 → نمایش محتوای bzip2
  • xzcat file.xz → نمایش محتوای xz

▍ ۳. آرشیو کردن فایل‌ها

• tar (محبوب‌ترین)

┌──(ya3in㉿kali)-[~] └─$ tar -cvf archive.tar file1.txt file2.txt file1.txt
file2.txt
└─$ tar -xvf archive.tar file1.txt
file2.txt

توضیح: -c ایجاد، -x باز کردن، -v نمایش جزئیات، -f نام فایل. برای فشرده‌سازی همزمان: -z (gzip)، -j (bzip2)، -J (xz).

┌──(ya3in㉿kali)-[~] └─$ tar -Jcvf archive.tar.xz *.txt

توضیح: ایجاد آرشیو فشرده با xz از همه فایل‌های .txt.

• cpio (قدیمی)

┌──(ya3in㉿kali)-[~] └─$ ls file*.txt | cpio -ov > archive.cpio └─$ cpio -iv < archive.cpio

توضیح: cpio ورودی را از STDIN می‌خواند. -o ایجاد، -i باز کردن، -v نمایش جزئیات.

• dd (کپی سطح پایین)

┌──(ya3in㉿kali)-[~] └─$ dd if=/dev/sdb of=backup.img bs=4M status=progress 8192+0 records in
8192+0 records out
4194304 bytes (4.2 MB) copied

توضیح: dd بایت‌به‌بایت از دیسک کپی می‌کند. if ورودی، of خروجی، bs اندازه بلاک.

• بکاپ افزایشی با tar -g

┌──(ya3in㉿kali)-[~] └─$ tar -g snapshot.snar -Jcvf backup.txz *.txt └─$ echo "new line" >> file1.txt └─$ tar -g snapshot.snar -Jcvf backup_inc.txz *.txt

توضیح: با -g snapshot.snar فقط فایل‌های تغییر کرده در بکاپ دوم ذخیره می‌شوند (بکاپ افزایشی).

▍ ۴. لینک‌های سخت (Hard Link) و نرم (Soft Link)

🔗 Hard Link

  • به Inode اشاره می‌کند.
  • اگر فایل اصلی حذف شود، داده‌ها باقی می‌مانند.
  • فقط برای فایل‌ها (نه دایرکتوری).
  • نمی‌تواند بین سیستم‌فایل‌های مختلف باشد.
└─$ ln original hardlink

🔗 Soft Link (Symbolic)

  • به نام فایل (Path) اشاره می‌کند.
  • اگر فایل اصلی حذف شود، لینک می‌شکند.
  • برای فایل‌ها و دایرکتوری‌ها کار می‌کند.
  • می‌تواند بین سیستم‌فایل‌های مختلف باشد.
└─$ ln -s original softlink
┌──(ya3in㉿kali)-[~] └─$ readlink -f softlink /home/ya3in/original

توضیح: readlink -f مسیر کامل فایل مقصد یک Soft Link را نمایش می‌دهد.

▍ ۵. سطح دسترسی‌ها (Permissions)

📌 نمایش مجوزها با ls -l:
└─$ ls -l file.txt -rw-r--r-- 1 ya3in ya3in 1024 Aug 17 10:00 file.txt
  • - نوع فایل (معمولی) · d دایرکتوری · l لینک
  • rw- مجوزهای مالک · r-- مجوزهای گروه · r-- مجوزهای دیگران

• تغییر مجوزها با chmod

┌──(ya3in㉿kali)-[~] └─$ chmod u+x file.txt └─$ chmod 755 file.txt

توضیح: روش نمادین (u+x) و روش عددی (755 = rwxr-xr-x). اعداد: r=4, w=2, x=1.

• تغییر مالک و گروه

┌──(ya3in㉿kali)-[~] └─$ sudo chown user:group file.txt └─$ sudo chgrp group file.txt

• مجوزهای ویژه: SUID, SGID, Sticky Bit

• umask (مجوزهای پیش‌فرض)

┌──(ya3in㉿kali)-[~] └─$ umask 0022 └─$ umask 027

توضیح: umask مجوزهای پیش‌فرض را مشخص می‌کند. 0022 یعنی فایل‌های جدید با 644 و دایرکتوری‌ها با 755 ساخته می‌شوند.

▍ ۶. سطح دسترسی پیشرفته (ACL)

┌──(ya3in㉿kali)-[~] └─$ getfacl file.txt # file: file.txt # owner: ya3in # group: ya3in user::rw- group::r-- other::r--

توضیح: getfacl مجوزهای ACL (و معمولی) را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ setfacl -m u:ahmad:rw file.txt └─$ setfacl -x u:ahmad file.txt

توضیح: setfacl -m یک قانون ACL اضافه می‌کند (به کاربر ahmad اجازه خواندن و نوشتن). -x قانون را حذف می‌کند. برای دایرکتوری‌ها با d: می‌توان مجوز پیش‌فرض تنظیم کرد: setfacl -m d:u:ahmad:rw dir/.

▍ ۷. جستجو در لینوکس (which, whereis, locate, find)

which

└─$ which ls /usr/bin/ls

مسیر دستور را در PATH پیدا می‌کند.

whereis

└─$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

مسیر + man page + source را نشان می‌دهد.

locate

└─$ locate .bashrc /home/ya3in/.bashrc

جستجوی سریع با دیتابیس (نیاز به sudo updatedb برای به‌روزرسانی).

find

└─$ find . -name "*.txt" ./file.txt

قدرتمندترین ابزار، جستجوی لحظه‌ای با گزینه‌های پیشرفته.

• گزینه‌های پرکاربرد find

گزینهتوضیح
-name "pattern"جستجو با نام (حساس به حروف)
-iname "pattern"جستجو با نام (بدون حساسیت)
-type f/d/lنوع فایل (معمولی/دایرکتوری/لینک)
-size +100Mفایل‌های بزرگ‌تر از ۱۰۰ مگابایت
-mtime -7تغییر یافته در ۷ روز اخیر
-perm /4000فایل‌های دارای SUID
-exec command {} \;اجرای دستور روی فایل‌های پیدا شده
┌──(ya3in㉿kali)-[~] └─$ find /var/log -name "*.log" -mtime +30 -type f └─$ find . -type f -size +10M -exec ls -lh {} \;

توضیح: مثال اول: فایل‌های لاگ قدیمی‌تر از ۳۰ روز. مثال دوم: فایل‌های بزرگ‌تر از ۱۰ مگابایت با نمایش جزئیات.

📌 نکات طلایی برای امتحان (جمع‌بندی نهایی)
  • مدیریت فایل: cp (کپی)، mv (جابجایی/تغییر نام)، rm -r (حذف دایرکتوری)، touch (ایجاد فایل خالی)
  • فشرده‌سازی: gzip (سریع)، bzip2 (نسبت بهتر)، xz (بهترین نسبت)، zip (سازگار با ویندوز)
  • آرشیو: tar -cvf (ایجاد)، tar -xvf (باز کردن)، -z (gzip)، -j (bzip2)، -J (xz)
  • بکاپ افزایشی: tar -g snapshot.snar
  • لینک‌ها: ln (Hard Link)، ln -s (Soft Link). Soft Link با l در ls -l مشخص می‌شود.
  • مجوزها: chmod 755 (rwxr-xr-x)، chown user:group، umask برای مجوزهای پیش‌فرض
  • مجوزهای ویژه: SUID=4 (مثل passwd)، SGID=2، Sticky Bit=1 (مثل /tmp)
  • ACL: getfacl (مشاهده)، setfacl -m u:user:perm (تنظیم برای کاربر خاص)
  • جستجو: which (مسیر دستور)، whereis (مسیر + man)، locate (سریع با دیتابیس)، find (قدرتمند و لحظه‌ای)
  • Wildcards: * (هر تعداد کاراکتر)، ? (دقیقاً یک کاراکتر)
✅ تمرین عملی پیشنهادی
  • یک دایرکتوری تست با چند فایل متنی بسازید و با tar -Jcvf یک آرشیو فشرده ایجاد کنید.
  • یک Soft Link و یک Hard Link برای یک فایل ایجاد کنید و تفاوت آنها را با ls -li (نمایش Inode) مشاهده کنید.
  • با chmod 750 مجوزهای یک فایل را تغییر دهید و با ls -l بررسی کنید.
  • با setfacl -m u:username:rw به یک کاربر خاص دسترسی بدهید و با getfacl تأیید کنید.
  • با find همه فایل‌های .conf در /etc که در ۷ روز اخیر تغییر کرده‌اند را پیدا کنید.